package drg_group.suzhou_2023.MDC;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

import drg_group.suzhou_2023.Base;
import drg_group.suzhou_2023.MedicalRecord;
import drg_group.suzhou_2023.ADRG.*;

public class MDCK{
    public static String group(MedicalRecord record){
        String[] mdc_zd={"E11.500x044","E00.900x005","E23.600x008","E71.304","E11.700x031","E79.100","E06.200","E23.000x007","E16.105","E70.201","E74.400x005","E01.201","E05.100","E74.402","E71.102","E14.500x043","D81.300","E15.x00x002","E27.800x010","E03.200x003","E14.600x051","E10.600x920","E06.002","E10.600x042","E11.500x048","E16.800x006","E27.300","E72.005","E16.900x002","E72.101","E34.000","E88.800x009","E89.303","E54.x00","E74.800x006","E10.800","E27.406","E13.800","E78.000x006","E11.500x047","E04.102","E43.x00x001","E05.800x001","E61.500","E74.901","E87.200x002","E78.600x011","E78.100x002","Q87.807","E23.600x010","E27.806","E30.001","E23.604","E06.100x002","E71.000","E03.900","E72.001","C79.700","E21.300","E77.100x006","E34.302","E87.600","E11.700x025","E10.500x021+I79.2*","E59.x00","E07.804","E23.006","Q89.205","E25.001","E83.503","E14.000x002","E71.309","E83.000x005","E23.701","E88.800x005","E78.402","E83.403","E87.800x004","E11.003","E23.600x011","E88.300","E88.900x010","C74.900","E23.005","E74.000x016+I43.1*","E83.300x010","E63.900","E24.000x001","E27.501","E07.802","E12.900","E61.100","E72.200x004","D35.200x011","E27.000x011","E74.100x002","E74.403","C73.x00","E10.600x043","E87.500","E11.600x042","E72.500","E27.808","E23.601","E11.700x021","E85.406","E78.000x003","E67.000","E23.611","E10.000","E83.500x001","D35.601","E27.000x002","E16.800x011","E87.204","E87.400","E70.202","E10.000x005","E78.100x003","E83.500x011","D44.100x001","E04.000","E72.100x003","E64.800","E74.001","E78.901","E01.100x003","E83.500x009","E10.102","E16.800x004","E05.805","E05.500","E66.201","E70.800x003","E00.900x002","E74.401","E11.000x005","E10.100x051","E86.x00x003","E72.500x003","E78.600x006","E70.300x003","E56.000","E53.900","E65.x00x002","E14.700x031","E12.700","E01.000x002","E53.800x011","E74.100x004","E75.505","E83.504","E51.800","E23.600x005","E55.900","E78.204","E77.900","E78.401","E74.300x002","E87.501","C79.800x839","E74.000x011","E13.906","E89.601","Q85.900x006","E78.600x007","D34.x01","E03.202","E30.002","D17.700x029","E10.000x001","E71.307","E11.700x033","E46.x00x002","E75.503","E11.102","E10.001","E31.001","E53.100x001","E06.001","E87.700","E45.x00","D34.x00x003","E75.500x001","E72.400x002","E76.200x012","E13.903","E24.801","D18.000x839","D18.000x810","E10.700x024","E12.100","E87.302","E78.209","E72.202","E70.000x002","E10.103","D35.100x002","E72.003","E87.802","E23.301","E04.200","E66.200","E11.700x024","E21.400x001","Q87.800x911","E13.907","E21.004","E63.000","E77.801","E46.x00x003","E10.002","E61.700","E03.000","E78.601","E23.000","E24.800x001","E65.x09","E53.800x010","E04.900x001","E21.000","E34.805","E04.001","E04.900x006","D35.200x009","E16.800x901","E87.803","E88.804","E58.x00","E77.000x002","E76.900x001","C73.x00x003","R82.400","D35.700","E11.600x043","E71.100x005","E00.200x002","E07.800x003","E72.100x006","E84.801","E87.201","D44.801","E34.300x002","E74.801","Q89.203","E05.201","E04.103","E13.600","E80.301","E30.801","E06.304","E74.002","E77.100x004","E64.000","E25.000x007","E65.x13","E05.801","E16.100x002","E05.900x001","E10.500x043","E71.100x003","E87.600x004","E00.900","E86.x00x004","E11.002","E04.904","E70.200","E11.700x032","E76.300","E10.100x031","E14.500x041","E14.700x032","E03.000x002","D35.000","E34.801","E70.000","E61.400","E83.301","E89.000","E11.500x045","E66.000","E34.500x001","E71.308","E34.100","E72.500x001","E80.302","E23.700x001","E14.500x051","E11.400x311+G99.0*","E13.901","E16.101","E01.800x002","E77.100x003","E85.901","E88.803","E05.301","E03.100","E70.300x004","E78.300x004","E06.300","E11.600x051","E05.802","E05.202","E27.000x001","E74.100","E83.500x008","E71.103","D34.x00x005","E01.000","E87.101","E06.300x005","E23.008","E25.005","E89.101","E00.200","E78.300x003","E74.000x007","E10.700x025","E51.900","E06.900","E10.700","E25.002","E03.101","E27.500","E64.200","E71.200","E51.900x001","E07.800x001","R81.x00x001","E16.100x004","D44.300x001","E50.900","E78.202","E67.800","E78.300x001","E21.201","E72.400","E87.102","E83.900","E78.100x007","C75.800","D44.001","E16.100x005","E20.802","E70.800x001","E07.806","E11.001","E23.003","E65.x08","E83.300x014","E27.800x012","E88.800x004","E72.306","E07.800x009","R64.x00","E70.102","E53.800x013","E05.400x001","E10.500x045","D44.200x001","E14.000","E45.x00x003","E26.100","E22.801","E16.109","E01.200","E10.100x012","E11.900","E16.802","E72.500x005","E59.x01","E10.000x002","E23.613","E25.802","D09.304","E89.100","E83.402","E27.405","R73.900x001","E10.700x021","E03.900x006","E88.806","E41.x01","E53.901","E13.904","E14.500x044","E27.101","E23.200","N25.801","E64.900","E10.504","E21.003","E72.800x002","E72.902","E06.501","E78.207","E78.208","E27.809","E87.600x003","E70.205","E44.000","E74.900x002","E72.900x004","E27.804","E20.901","E13.900x003","E44.100","E66.801","E75.501","E89.001","D09.300","E21.402","E11.700x011","E77.100x005","E56.800x001","E74.804","E27.805","E76.200x003","E24.200x001","E25.901","E30.103","E12.500","E78.500x001","E70.204","E83.500x007","E86.x00x001","E10.900x003","E78.100x008","E02.x00","E04.100x005","E12.000","E14.700","E00.100x003","E14.500x042","E76.200x011","E26.802","D35.200x008","E70.100x001","E43.x00","E72.302","E75.504","E78.000x004","E84.900","E85.400x014","E78.001","E83.303","E83.305","E89.002","E01.100","E80.300x001","E74.800x007","D35.200x004","E50.100x001+H13.8*","E12.600","E89.800x002","E21.400x003","E10.501+I79.2*","D35.100","E06.500x002","E65.x00x011","E22.802","R73.000","E03.901","E06.100x004","E16.800x105","E72.100x005","Q89.206","E65.x05","E23.610","E10.100","E34.802","E30.102","E10.100x061","E16.801","E77.100x002","E87.202","E76.200x006","E03.300","E16.110","E23.201","E16.800x007","E23.010","E31.800","E53.000","E11.500x046","R79.801","E23.202","E03.100x001","E72.402","E16.803","E71.310","E01.000x003","E05.905","E06.301","E34.501","E83.502","E05.800x005","E23.000x011","E53.800x012","E04.801","E06.000","E87.001","Q89.200x203","E16.800x021","E83.304","E34.300x006","E70.203","E23.000x014","E11.504","E14.800","E23.200x005","E23.203","C74.000","E23.300x001","E42.x00","E27.402","E74.300x001","E07.100x003","E76.100","C75.900","E80.700","E22.000x002","E63.100","E05.302","E10.505","E27.000x003","E14.500x050","E79.001","R94.700","E89.302","E26.900","E70.300","E70.100x004","E24.202","E74.101","E83.200x002","E34.500x005","E83.000x006","E78.002","E71.100x004","E11.000x001","E24.100","E24.400","E46.x00x004","E83.401","E71.300x005","E16.300","E07.901","E76.201","E10.003","R94.600","D09.301","E72.401","E88.202","E06.303","E12.800","E70.101","E56.900","E23.612","E88.100x005","E11.500x043","E87.205","E00.100x002","E40.x00","E88.100x006","E23.600x001","E61.300","E24.000","E10.503","E14.500x047","E88.100x002","C74.100","D44.901","E06.500x004","C79.805","E78.500","E16.104","E64.100","E04.902","E83.800","E88.100x004","E65.x02","E67.100","E86.x01","D35.200x010","E21.301","E74.000x010","Q87.100x904","E06.300x004","E25.903","E78.205","E31.901","D44.000x001","E06.100","E89.801","E10.600x910","E05.400","E71.101","E05.300","E04.100","E27.901","E65.x11","E78.300x002","E72.200x007","E34.200","E04.200x001","E24.901","E76.000","E65.x00x010","R63.801","E34.301","E83.300x021+M90.8*","E11.500x051","D34.x00","E16.102","E03.100x004","E16.300x001","E23.600x014","E34.303","E16.100x013","D35.200","D81.500","E61.900","E74.000","E78.200","E66.900","E66.901","E14.500x049","E24.200","E06.300x001","E41.x00","E27.200x003","E71.302","E79.800x001","E07.001","E24.902","E14.000x003","E25.902","E83.300x007","E77.000x003","E11.800","E78.100","Q89.200x012","E14.600x042","E67.200","E70.301","E78.000x007","E10.500x048","E10.500x044","E23.600x015","E30.100","E88.802","Q89.201","E23.607","E22.000x001","E72.303","E76.200x001","E83.000","E72.305","E16.800x002","E74.000x012","E83.100","E34.800x006","E26.000x003","Q89.207","E10.700x032","E56.100","E78.000","D09.302","E00.900x004","E07.803","E27.407","E34.304","E07.100x002","E72.900x002","E74.000x008","E04.200x003","D35.800","E88.903","E11.500x049","E15.x00x001","E14.100","E16.100x001","E65.x01","E01.801","E27.802","E71.300x011","E24.300","E10.900x004","E31.000","E34.900x003","E07.805","E53.100","E30.101","E60.x00","E71.305","E10.901","E72.400x001","E72.800x001","E74.000x006","E89.201","E14.500x045","E76.200x010","E72.203","E89.102","E72.500x004","E65.x03","E78.600x009","E04.901","E23.007","E72.900x006","E75.502","E10.101","E14.500x048","E16.100x010","E14.700x025","E22.900","E74.400","E14.700x024","E88.000x002","E89.300x002","E23.302","E31.100","E27.001","E22.100","E10.600x051","E74.009","E76.200x008","E14.000x004","E27.100x003","D44.201","E13.902","E67.300","E88.807","E13.900x006","E06.100x001","E30.000","E10.600x911","E78.000x005","E20.000","D44.101","E23.619","E74.200x002","E74.004","E10.000x006","E66.900x001","E75.600x001","E21.401","E72.205","E66.100","D44.802","E16.106","E34.804","E27.404","E13.102","E34.300x003","E06.502","E26.803","E74.200","E11.503","E27.200","C79.825","E72.300x002","E83.309","S37.803","D35.200x007","E26.001","E78.200x012","E14.500x021+I79.2*","E52.x00x003","E11.103","R73.001","E03.400","E26.801","E61.200","E23.009","E20.900","E65.x00x013","E06.400x002","E14.700x021","E43.x00x002","E46.x01","E11.600x930","E25.000x008","E53.802","E21.006","E72.204","C75.000","E74.005","R73.002","E23.000x008","E23.616","E76.200x007","E76.800","E78.801","E70.300x005","E74.000x009","E00.100","E14.000x006","E78.602","E23.200x003","E23.608","E74.201","E72.301","E78.206","E21.100x001","E65.x12","E74.803","E16.112","E74.300x003","E05.200x004","D44.800x002","E20.100","E22.200","E72.102","E22.001","E88.000x003","E23.001","E07.800x004","E16.800x104","E79.900","E78.100x005","E85.300x002","E52.x00x002","E78.100x004","E05.203","R29.000","E25.003","E72.200x002","E78.210","E14.000x001","E23.606","D09.303","E53.804","E05.804","E16.901","E01.200x001","E74.003","E88.001","E72.200x008","E88.101","E83.200","E23.603","D44.301","E10.500x049","E30.000x003","E05.000","E46.x00x005","E89.800x003","E65.x10","E27.400x005","E07.801","R74.800x009","E16.300x002","E14.600x043","E03.000x004","E06.400","E03.802","E88.800x007","E07.800x007","E00.000","E24.001","E14.500x011+I79.2*","E83.501","E11.600x911","E74.000x013","E77.000","E21.001","E15.x00x004","E30.100x002","E24.201","E27.803","E07.800x011","E27.807","E34.500x002","E14.100x012","E23.002","E13.101","E24.900","E76.200x009","E04.104","E14.000x005","E11.000","E23.000x015","D35.001","E72.004","E21.005","E63.800","E26.000","E05.001","E72.201","E78.003","E34.400","E10.500x046","E87.203","E07.100","E11.101","E72.901","E27.800x021","E03.001","E11.000x006","E06.500x001","E14.700x011","E07.000x001","E16.200","E78.600x010","E78.600x001","E85.300x003","E34.803","E27.801","E78.600x003","E14.600x910","E21.300x002","E31.900","E61.800","E27.810","E85.800","E89.200x001","E16.800x001","E23.617","E88.100x001","E89.301","E04.201","E16.804","E27.800x005","E88.800x013","E21.500","Q89.100","E22.002","Q89.200x204","E65.x07","E13.000","E05.003","E23.004","E23.618","Q89.101","E05.200","E21.000x007","E11.600x910","E70.800x002","E78.200x008","E87.303","E74.802","E78.800x002","R82.401","E23.605","E01.100x002","E83.302","E87.206","D35.900","E52.x00","E21.002","C48.000x002","E23.614","E25.801","E07.000","E83.306","E11.600x920","E87.701","E72.002","E13.905","E88.801","E34.903","E27.500x003","E72.100x007","E03.201","E61.000","E23.602","E78.600x008","E04.903","E14.100x031","E78.900","E06.100x003","E07.000x002","E25.004","E10.500x047","E34.500","E72.100x004","E76.200x002","E00.000x002","E78.600","D44.800","E16.800x103","E34.305","E16.800x003","E87.801","E20.801","R94.801","E61.600","E72.300x001","E65.x04","E14.600x920","E16.000x001","E10.600x930","E26.800x002","E23.615","E70.900","E23.100","E10.700x031","E10.900","E27.401","E11.100x051","E72.800x005","E27.403","E14.600x911","E14.500x046","E76.200x004","D44.900x001","E87.301","E10.500x051","E13.700","E85.200x001","E72.500x002","E88.901","C75.100","E55.002","E88.203","E68.x00","E23.000x005","E11.505","E71.300","E72.800x004","Q90.000","E14.600x930","E31.002","R73.003","E05.806","E78.201","E16.301","E23.204","E23.600x016","E83.002","E87.600x002","E16.103","E04.101","E14.100x051","E16.100x006","E22.000x005","E72.304","E88.800x008","E06.000x003","E89.300x003","E27.400x006","E03.801","E00.901","E03.100x002","E14.900x001"};
        String[] dept_list={};
        if (!(true && Base.contains(mdc_zd,record.zdList[0]))){
            return "";
        }
        
        Base.groupMessages.putMessage(record.Index,"符合MDCK入组条件，匹配规则：主诊断匹配");
        String result;

        result=KB1.group(record);
        if (result.length()>0){
            return result;
        }

        result=KC1.group(record);
        if (result.length()>0){
            return result;
        }

        result=KD1.group(record);
        if (result.length()>0){
            return result;
        }

        result=KD2.group(record);
        if (result.length()>0){
            return result;
        }

        result=KE1.group(record);
        if (result.length()>0){
            return result;
        }

        result=KJ1.group(record);
        if (result.length()>0){
            return result;
        }

        if (record.ssList!=null && record.ssList.length>0 && Base.contains(Base.SS_VALID,record.ssList[0])){
            Base.groupMessages.putMessage(record.Index,"符合KQY入组条件，存在有效手术操作："+String.join(",",Base.Intersect(record.ssList,Base.SS_VALID)));
            return "KQY";
        }

        result=KR1.group(record);
        if (result.length()>0){
            return result;
        }

        result=KS1.group(record);
        if (result.length()>0){
            return result;
        }

        result=KT1.group(record);
        if (result.length()>0){
            return result;
        }

        result=KU1.group(record);
        if (result.length()>0){
            return result;
        }

        result=KV1.group(record);
        if (result.length()>0){
            return result;
        }

        result=KZ1.group(record);
        if (result.length()>0){
            return result;
        }

        Base.groupMessages.putMessage(record.Index,"不符合MDCK的ADRG入组条件");
        return "";
    }
}

